package com.macro.mall.model.response;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;

/**
 * 担保支付订单新增/更新响应参数
 * 用于接收小红书担保支付接口的返回数据
 */
@Data // Lombok注解，自动生成getter/setter/toString等方法
public class OrderUpsertResponse {

    /**
     * 接口调用是否成功
     * true: 成功  false: 失败
     */
    private Boolean success;

    /**
     * 接口返回的提示消息
     * 成功时一般为"success"，失败时为错误详情
     */
    private String msg;

    /**
     * 业务状态码
     * 0表示成功，非0表示各种错误状态
     */
    private Integer code;

    /**
     * 订单相关的核心数据
     * 包含订单ID、支付信息等关键字段
     */
    private ResponseData data;

    /**
     * 内部静态类：响应数据明细
     */
    @Data
    public static class ResponseData {

        /**
         * 外部订单ID（商户系统订单号）
         * 需保证唯一性，用于商户系统和小红书平台对账
         * JSON字段: out_order_id
         */
        @JsonProperty("out_order_id")
        private String outOrderId;

        /**
         * 小红书平台生成的订单ID
         * 小红书侧唯一标识，用于后续查询/退款等操作
         * JSON字段: order_id
         */
        @JsonProperty("order_id")
        private String orderId;

        /**
         * 订单最终总金额（单位：分）
         * 例如：1表示0.01元
         * JSON字段: final_price
         */
        @JsonProperty("final_price")
        private Long finalPrice;

        /**
         * 支付令牌（用于拉起支付）
         * 有效期通常为30分钟，需在过期前完成支付
         * JSON字段: pay_token
         */
        @JsonProperty("pay_token")
        private String payToken;

        /**
         * 支付过期时间（UNIX时间戳，秒级）
         * 超过此时间用户将无法支付
         * JSON字段: expired_time
         */
        @JsonProperty("expired_time")
        private Long expiredTime;

        /**
         * 支付类型
         * 可能值：
         *   - direct: 直连支付
         *   - life_gpay: 担保支付
         * JSON字段: open_pay_type
         */
        @JsonProperty("open_pay_type")
        private String openPayType;
    }
}
